#ifndef ANIMATION_MANAGER_H_
#define ANIMATION_MANAGER_H_

#include "CAnimation.h"
#include <deque>
using std::deque;

/*
CAnimationManager - Manages all animations globally as a singleton class. All animations will be pre-loaded in an init function.
Any objects that need an animation can get a pointer to the animation using accessor functions
*/
class CAnimationManager
{
private:
	// deque of all the current animations loaded
	deque<CAnimation*> m_Animations;
	// Number of animations currently in the manager
	unsigned int m_unNumAnimations;

	CAnimationManager();
	~CAnimationManager();	

public:
	
	static CAnimationManager* GetInstance();
	
	void Init();
	void Shutdown();

	bool AddAnimation(const char* szFileName);
	bool AddAnimation(CAnimation* pAnim);

	bool RemoveAnimation(const char* szFileName);
	bool RemoveAnimation(unsigned int unIndex);

	CAnimation* GetAnimation(const char* szAnimName);
	CAnimation* GetAnimation(unsigned int unIndex);
	unsigned int GetAnimationIndex(const char* szAnimName);
};



#endif